<?php

require_once 'Banco.php';
require_once 'Model/Evento.php';
require_once 'DaoCategoria.php';
require_once 'DaoEmpresa.php';
require_once 'DaoLocal.php';
class DaoEventos extends Banco{
    function DaoEventos(){
        
    }
    
    function getEventos($limite=0){
        $eventos = array();
        Banco::conecta();
        $banco = Banco::getBanco();
        if($limite==0){
            $query = $banco->query("SELECT * FROM V_EVENTOSATIVOS WHERE EVE_ATIVO='S' AND EVE_DATA >= NOW() ORDER BY EVE_DATA DESC;");
        }else{
            $query = $banco->query("SELECT * FROM V_EVENTOSATIVOS WHERE EVE_ATIVO='S' AND EVE_DATA >= NOW() ORDER BY RAND() LIMIT ".addslashes($limite));
        }
        if(!empty($query)){
            while ($q= $query->fetch_assoc() ) {
                $evento = new Evento(); 
                $dc = new DaoCategoria();
                $de = new DaoEmpresa();
                $dl = new DaoLocal();
                $evento->setCodigo($q['EVE_CODIGO']);
                $evento->setDescricao($q['EVE_DESCRICAO']);
                $evento->setCategoria($dc->getCategoria($q['EVE_CODCATEGORIA']));
                $evento->setHoraCriacao($q['EVE_DATACRIACAO']);
                $evento->setData($q['EVE_DATA']);
                $evento->setEmpresa($de->getEmpresa($q['EVE_CODEMPRESA']));
                $evento->setHoraFim($q['EVE_HORAFIM']);
                $evento->setHoraInicio($q['EVE_HORAINICIO']);
                $evento->setLocal($dl->getLocal($q['EVE_CODLOCAL']));
                $evento->setTitulo($q['EVE_TITULO']);
                $evento->setAtivo($q['EVE_ATIVO']);
                $eventos[] = (object)$evento;
            }
        }
        
        return $eventos;
    }
    
    
    //ARRUMAR ISSO AQUI
    function getEventosByCidade($cidade, $limite=0){
        $eventos = array();
        Banco::conecta();
        $banco = Banco::getBanco();
        if($limite==0){
            $query = $banco->query("SELECT * FROM V_EVENTOSATIVOS WHERE EVE_ATIVO='S' AND EVE_DATA >= NOW() ORDER BY EVE_DATA DESC;");
        }else{
            $query = $banco->query("SELECT * FROM V_EVENTOSATIVOS WHERE EVE_ATIVO='S' AND EVE_DATA >= NOW() ORDER BY RAND() LIMIT ".addslashes($limite));
        }
        if(!empty($query)){
            while ($q= $query->fetch_assoc() ) {
                $evento = new Evento(); 
                $dc = new DaoCategoria();
                $de = new DaoEmpresa();
                $dl = new DaoLocal();
                $evento->setCodigo($q['EVE_CODIGO']);
                $evento->setDescricao($q['EVE_DESCRICAO']);
                $evento->setCategoria($dc->getCategoria($q['EVE_CODCATEGORIA']));
                $evento->setHoraCriacao($q['EVE_DATACRIACAO']);
                $evento->setData($q['EVE_DATA']);
                $evento->setEmpresa($de->getEmpresa($q['EVE_CODEMPRESA']));
                $evento->setHoraFim($q['EVE_HORAFIM']);
                $evento->setHoraInicio($q['EVE_HORAINICIO']);
                $evento->setLocal($dl->getLocal($q['EVE_CODLOCAL']));
                $evento->setTitulo($q['EVE_TITULO']);
                $evento->setAtivo($q['EVE_ATIVO']);
                //*********************************************************** ARRUMAR ISSO AQUI
                if($evento->getLocal()->getCidade()->getCodigo()==$cidade){
                    $eventos[] = (object)$evento;
                }
            }
        }
        
        return $eventos;
    }
    
    
    function getEvento($codigo){
        $evento = NULL;  
        Banco::conecta();
        $banco = Banco::getBanco();
        $sql = $banco->prepare("SELECT EVE_CODIGO, EVE_CODEMPRESA, EVE_CODCATEGORIA, EVE_TITULO, EVE_DESCRICAO, EVE_DATACRIACAO, EVE_DATA, EVE_HORAINICIO, EVE_HORAFIM, EVE_CODLOCAL, EVE_ATIVO FROM TB_EVENTOS WHERE EVE_CODIGO = ? AND EVE_ATIVO='S'");
        if ($sql) {
            $sql->bind_param('i',$codigo);
            $sql->execute();
            $sql->bind_result($id, $emp, $cat, $titulo, $descricao, $criacao, $data, $horainicio, $horafim, $local, $ativo);
            while ($sql->fetch()) {
                $evento = new Evento();
                $dc = new DaoCategoria();
                $de = new DaoEmpresa();
                $dl = new DaoLocal();
                $evento->setCodigo($id);
                $evento->setDescricao($descricao);
                $evento->setCategoria($dc->getCategoria($cat));
                $evento->setHoraCriacao($criacao);
                $evento->setData($data);
                $evento->setEmpresa($de->getEmpresa($emp));
                $evento->setHoraFim($horafim);
                $evento->setHoraInicio($horainicio);
                $evento->setLocal($dl->getLocal($local));
                $evento->setTitulo($titulo);
                $evento->setAtivo($ativo);
            }
        }
        return $evento;
    }
    function getEventoByEmpresa($codigoEmpresa){
        $eventos = array();
        Banco::conecta();
        $banco = Banco::getBanco();
        $sql = $banco->prepare("SELECT EVE_CODIGO, EVE_CODEMPRESA, EVE_CODCATEGORIA, EVE_TITULO, EVE_DESCRICAO, EVE_DATACRIACAO, EVE_DATA, EVE_HORAINICIO, EVE_HORAFIM, EVE_CODLOCAL, EVE_ATIVO FROM TB_EVENTOS WHERE EVE_CODEMPRESA = ? AND EVE_ATIVO='S'");
        if ($sql) {
            $sql->bind_param('i',$codigoEmpresa);
            $sql->execute();
            $sql->bind_result($id, $emp, $cat, $titulo, $descricao, $cricao, $data, $horainicio, $horafim, $local, $ativo);
            while ($sql->fetch()) {
                $evento = new Evento();  
                $dc = new DaoCategoria();
                $de = new DaoEmpresa();
                $dl = new DaoLocal();
                $evento->setCodigo($id);
                $evento->setDescricao($descricao);
                $evento->setCategoria($dc->getCategoria($cat));
                $evento->setHoraCriacao($cricao);
                $evento->setData($data);
                $evento->setEmpresa($de->getEmpresa($emp));
                $evento->setHoraFim($horafim);
                $evento->setHoraInicio($horainicio);
                $evento->setLocal($dl->getLocal($local));
                $evento->setTitulo($titulo);
                $evento->setAtivo($ativo);
                $eventos[] = $evento;
            }
        }
        return (object)$eventos;
    }
    
    function getEventoByCategoria($codigoCategoria){
        $eventos = array();
        Banco::conecta();
        $banco = Banco::getBanco();
        $sql = $banco->prepare("SELECT EVE_CODIGO, EVE_CODEMPRESA, EVE_CODCATEGORIA, EVE_TITULO, EVE_DESCRICAO, EVE_DATACRIACAO, EVE_DATA, EVE_HORAINICIO, EVE_HORAFIM, EVE_CODLOCAL, EVE_ATIVO FROM TB_EVENTOS WHERE EVE_CODCATEGORIA = ? AND EVE_ATIVO='S'");
        if ($sql) {
            $sql->bind_param('i',$codigoCategoria);
            $sql->execute();
            $sql->bind_result($id, $emp, $cat, $titulo, $descricao, $cricao, $data, $horainicio, $horafim, $local, $ativo);
            while ($sql->fetch()) {
                $evento = new Evento();  
                $dc = new DaoCategoria();
                $de = new DaoEmpresa();
                $dl = new DaoLocal();
                $evento->setCodigo($id);
                $evento->setDescricao($descricao);
                $evento->setCategoria($dc->getCategoria($cat));
                $evento->setHoraCriacao($cricao);
                $evento->setData($data);
                $evento->setEmpresa($de->getEmpresa($emp));
                $evento->setHoraFim($horafim);
                $evento->setHoraInicio($horainicio);
                $evento->setLocal($dl->getLocal($local));
                $evento->setTitulo($titulo);
                $evento->setAtivo($ativo);
                $eventos[] = $evento;
            }
        }
        return (object)$eventos;
    }
    function addEvento(Evento $evento){
        Banco::conecta();
        $banco = Banco::getBanco();
        if(!is_a($evento->getEmpresa(), 'Empresa')){
            $empresa=NULL;
        }else{
            $empresa=$evento->getEmpresa()->getCodigo();
        }
        if(!is_a($evento->getCategoria(), 'Categoria')){
            $categoria=NULL;
        }else{
            $categoria=$evento->getCategoria()->getCodigo();
        }
        if(!is_a($evento->getLocal(), 'Local')){
            $local=NULL;
        }else{
            $local=$evento->getLocal()->getCodigo();
        }
        
        $titulo = $evento->getTitulo();
        $descricao = $evento->getDescricao();
        $data = $evento->getData();
        $inicio = $evento->getHoraInicio();
        $fim = $evento->getHoraFim();
        $lastid = -1;
         if ($sql = $banco->prepare("INSERT INTO TB_EVENTOS VALUES (default,?,?,?,?,NOW(),?,?,?,?,default);")) {
            $sql->bind_param('iisssssi',$empresa,$categoria,$titulo,$descricao,$data,$inicio,$fim,$local);
            $sql->execute();
            $lastid = $sql->insert_id;
            $sql->close();
            ?>
            <!--<script>alert("ADD");</script>-->
            <?
        }
        return $lastid;
    }
    function deleteEvento(Evento $evento){
        $codigo = $evento->getCodigo();
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("UPDATE TB_EVENTOS SET EVE_ATIVO='N' WHERE EVE_CODIGO = ?;")) {
            $sql->bind_param('i',$codigo);
            $sql->execute();
            $sql->close();
        }
        
    }
    function deleteEventoByCodigo($codEvento){
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("UPDATE TB_EVENTOS SET EVE_ATIVO='N' WHERE EVE_CODIGO = ?;")) {
            $sql->bind_param('i',$codEvento);
            $sql->execute();
            $sql->close();
        }
    }
    function updateEvento(Evento $evento){
        Banco::conecta();
        $banco = Banco::getBanco();
        $titulo = $evento->getTitulo();
        $descricao = $evento->getDescricao();
        $categoria = $evento->getCategoria();
        $data = $evento->getData();
        $inicio = $evento->getHoraInicio();
        $fim = $evento->getHoraFim();
        $codEvento = $evento->getCodigo();
        echo $codEvento;
        if ($sql = $banco->prepare("UPDATE TB_EVENTOS SET EVE_TITULO = ?, EVE_DESCRICAO = ?, EVE_DATA = ?, EVE_HORAINICIO = ?, EVE_HORAFIM = ? WHERE EVE_CODIGO = ?;")) {
            $sql->bind_param('sssssi',$titulo, $descricao, $data, $inicio, $fim, $codEvento);
            $sql->execute();
            $sql->close();
        }
    }
}

?>
